package com.platform.comm.service;

import com.platform.vo.ExcelCfgDto;
import com.platform.comm.entity.CommDataInfoEntity;
import com.platform.vo.UploadApiDto;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.math.BigDecimal;
import java.util.Map;

/**
 * 通用导入数据业务接口
 *
 * @author libin
 */
public interface ICommDataInfoBiz {
    String IMPORT = "import";
    String EXPORT = "export";

    /**
     * 根据ID查询
     *
     * @param id id
     * @return 导入对象信息
     */
    CommDataInfoEntity queryCommDataImpById(String id);

    CommDataInfoEntity updateCommDataImp(CommDataInfoEntity entity);

    CommDataInfoEntity saveUploadRecord(String resourceKey, MultipartFile uploadFile);

    /**
     * 通用导入记录
     *
     * @param paramsMap  参数上下文
     * @param uploadFile 上传文件
     * @return 导入配置对象
     */
    CommDataInfoEntity saveRecord(Map<String, String> paramsMap, MultipartFile uploadFile);

    /**
     * 通用导入记录
     * @param originalFileName
     * @param size
     * @param uploadFile
     * @return
     */
    CommDataInfoEntity saveRecord(String originalFileName, BigDecimal size, InputStream uploadFile);

    /**
     * @param uploadApiDto
     * @return
     */
    CommDataInfoEntity saveUploadRecord(UploadApiDto uploadApiDto);

    /**
     * 初始化审计信息
     *
     * @param importId 导入批号ID
     * @return commDataInfoEntity
     */
    CommDataInfoEntity initCommDataInfo(String importId);

    /**
     * 初始化导入配置
     *
     * @param moduleName 导入模块
     * @param configType 配置类型
     * @return 配置信息
     */
    ExcelCfgDto initImpConfig(String moduleName, String configType);

    /**
     * 删除附件数据
     *
     * @param attachmentId 附件id
     */
    void delete(String attachmentId);

    /**
     * 附件ID
     *
     * @param attachmentId
     * @return
     */
    InputStream downLoadFile(String attachmentId);
}
